@JsonIgnoreProperties Jackson-এর একটি অ্যানোটেশন, যা JSON Serialization এবং Deserialization-এর সময় নির্দিষ্ট প্রপার্টি বা ফিল্ডগুলোকে অগ্রাহ্য (ignore) করার জন্য ব্যবহৃত হয়। এটি ক্লাস লেভেলেও ব্যবহার করা যেতে পারে, এবং একাধিক প্রপার্টি বা ফিল্ডকে exclude (অন্যথায় ignore) করার জন্য ব্যবহার করা যায়।
@JsonIgnoreProperties এর মূল বৈশিষ্ট্য
- Multiple Properties Exclusion:
- এটি একাধিক ফিল্ড বা প্রপার্টি exclude করার জন্য ব্যবহার করা যেতে পারে।
- Serialization এবং Deserialization:
- JSON-এ যেসব ফিল্ড বা প্রপার্টি অন্তর্ভুক্ত করতে চান না, সেগুলি Serialization (Java Object থেকে JSON) এবং Deserialization (JSON থেকে Java Object) উভয় প্রক্রিয়ায় exclude করা সম্ভব।
- Class Level এবং Field Level:
- এটি ক্লাস বা ফিল্ড-লেভেলেও প্রয়োগ করা যেতে পারে। ক্লাস লেভেলে ব্যবহার করলে এটি পুরো ক্লাসের ফিল্ডগুলোর উপর প্রভাব ফেলে।
@JsonIgnoreProperties এর Syntax
@JsonIgnoreProperties(value = {"property1", "property2"})
- value: এটি যে ফিল্ডগুলোকে ignore করবে, সেগুলোর নামের একটি অ্যারে।
- ignoreUnknown: যদি JSON ডেটাতে কোনো অজ্ঞাত (unknown) প্রপার্টি থাকে, তবে সেগুলোকে ignore করতে
ignoreUnknown = trueব্যবহার করা যেতে পারে।
@JsonIgnoreProperties দিয়ে Multiple Properties Exclude করা
উদাহরণ 1: ক্লাস লেভেলে @JsonIgnoreProperties ব্যবহার
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(value = {"email", "address"})
public class User {
private int id;
private String name;
private String email;
private String address;
// Constructors, Getters, and Setters
public User(int id, String name, String email, String address) {
this.id = id;
this.name = name;
this.email = email;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonIgnorePropertiesExample {
public static void main(String[] args) throws Exception {
User user = new User(1, "John Doe", "john@example.com", "1234 Elm Street");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
System.out.println(json);
}
}
Output (Without email and address):
{
"id": 1,
"name": "John Doe"
}
ব্যাখ্যা:
@JsonIgnoreProperties(value = {"email", "address"})ব্যবহার করে,emailএবংaddressফিল্ডগুলো JSON Serialization থেকে বাদ পড়েছে।
উদাহরণ 2: ignoreUnknown = true ব্যবহার
এটি তখন ব্যবহার করা হয় যখন JSON ডেটায় কিছু অজ্ঞাত ফিল্ড থাকে, এবং আপনি সেগুলোকে ignore করতে চান।
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
private int id;
private String name;
private String email;
// Constructors, Getters, and Setters
}
Deserialization Example (With Unknown Property):
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonIgnoreUnknownExample {
public static void main(String[] args) throws Exception {
String json = "{\"id\":1, \"name\":\"John Doe\", \"email\":\"john@example.com\", \"unknownField\":\"someValue\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
System.out.println("User Email: " + user.getEmail());
}
}
Output:
User ID: 1
User Name: John Doe
User Email: john@example.com
ব্যাখ্যা:
ignoreUnknown = trueব্যবহার করার ফলেunknownFieldনামের অজ্ঞাত প্রপার্টি JSON থেকে ডেসিরিয়ালাইজ করার সময় বাদ দেওয়া হয়েছে এবং এটিUserঅবজেক্টের মধ্যে উপস্থিত হয়নি।
Field Level @JsonIgnoreProperties ব্যবহার
আপনি যদি শুধুমাত্র একটি নির্দিষ্ট ফিল্ডে @JsonIgnoreProperties ব্যবহার করতে চান, তাহলে সেটি একক ফিল্ডের উপর প্রয়োগ করা যাবে।
উদাহরণ:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
public class User {
private int id;
private String name;
@JsonIgnoreProperties("email")
private String email;
// Constructors, Getters, and Setters
}
@JsonIgnoreProperties ব্যবহার করার সুবিধা
- Multiple Fields Exclusion:
- একাধিক ফিল্ড বা প্রপার্টি একত্রে exclude করা যায়। এর মাধ্যমে JSON ফিল্ডের মধ্যে কোন ফিল্ড থাকা উচিত এবং কোনটি বাদ দেওয়া উচিত তা সহজে নিয়ন্ত্রণ করা যায়।
- Backward Compatibility:
- যদি JSON ফরম্যাটে নতুন ফিল্ড যুক্ত হয় এবং আপনি পুরনো ক্লাসে কাজ করতে চান, তাহলে
ignoreUnknown = trueব্যবহার করে নতুন অজ্ঞাত ফিল্ড গুলি বাদ দেওয়া সম্ভব।
- যদি JSON ফরম্যাটে নতুন ফিল্ড যুক্ত হয় এবং আপনি পুরনো ক্লাসে কাজ করতে চান, তাহলে
- Security:
- সিকিউরিটি কারণে আপনি কিছু সেনসিটিভ ফিল্ড (যেমন পাসওয়ার্ড) সরাসরি JSON থেকে বাদ দিতে পারেন, যাতে সেগুলি আউটপুটে প্রদর্শিত না হয়।
- Custom Exclusions:
- Serialization এবং Deserialization প্রক্রিয়ার সময় বিশেষভাবে নির্দিষ্ট ফিল্ডগুলো exclude করার জন্য
@JsonIgnorePropertiesঅ্যানোটেশনটি অত্যন্ত কার্যকর।
- Serialization এবং Deserialization প্রক্রিয়ার সময় বিশেষভাবে নির্দিষ্ট ফিল্ডগুলো exclude করার জন্য
@JsonIgnorePropertiesএকটি শক্তিশালী টুল, যা Jackson JSON প্রক্রিয়ার সময় একাধিক ফিল্ড বা প্রপার্টি exclude (অগ্রাহ্য) করার জন্য ব্যবহৃত হয়।- এটি ক্লাস বা ফিল্ড-লেভেলেও প্রয়োগ করা যায় এবং এটি
ignoreUnknown = trueসহ অজ্ঞাত প্রপার্টি ignore করতে সাহায্য করে। - JSON Serialization এবং Deserialization-এর সময় বিশেষ ফিল্ড বাদ দেওয়ার জন্য এটি কার্যকর একটি অ্যানোটেশন।
Content added By
Read more